Many on-line applications rely on data that is hierarchically organized, for example, street address look-ups, genealogy applications, company management directories, university course catalogs, and hardware configurators. Sometimes, user tasks in these applications are aimed at identifying a single instance or node, as in a directory look-up. Other times users are attempting to create permissible subsets of the data governed by the hierarchical relationships of the underlying data. This is the case with a hardware configurator. Users are trying to define a system that contains one or more components whose relationships are governed by the underlying hierarchy. They select a basic system, and then pick a processor from the set of available processors, storage compatible with the processor, a rack that the system fits in, etc. There may be other racks and storage that are not compatible and hence cannot be combined in this subset/system.
Existing hardware configurators have not adequately solved the problem of allowing users to define a system elegantly. One approach for instance, addresses the task by constraining the starting points and by constraining the size of hierarchical “chunks” (i.e., product “parents, peers and children”) based on the selected item. This has the effect of constraining the solution set in ways that may not be desired. For instance, parents may be added automatically when not desired, forcing a user to include a chassis (parent) and a server when only a server was desired. This particular approach does not portray all objects in the emerging configuration. In addition, because this approach does not drive the hierarchy from a focus object, it does not filter subsequent additions based on a particular focus object. Hence, the approach has a single adding mechanism in its graphical user interface.
In view of the foregoing, there exists a need for a solution that solves at least one of the deficiencies of the related art.